<%@page import="java.sql.Time"%>
<%@page import="controller.UsuarioController"%>
<%@page import="view.UsuarioBean"%>
<%@page import="model.Usuario"%>
<%@page import="controller.PontoGastronomicoController"%>
<%@page import="util.PointFactory"%>
<%@page import="java.util.HashSet"%>
<%@page import="java.util.Set"%>
<%@page import="com.vividsolutions.jts.geom.Point"%>
<%@page import="controller.EstiloPontoGastronomicoController"%>
<%@page import="view.EstiloPontoGastronomicoBean"%>
<%@page import="controller.TipoPontoGastronomicoController"%>
<%@page import="view.TipoPontoGastronomicoBean"%>
<%@page import="java.util.List"%>
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <link rel="shortcut icon" href="/img/favicon.png"/>
        <title>GastroMap - Cadastrar Estabelecimento</title>
        <%@include file="/_include.html"%>
        <script src="/js/consulta.js"></script>
        <script src="/js/cadastrarEstabelecimento.js"></script>
    </head>
    <body>
        <!-- Redirecionamento caso não esteja logado -->
        <%
           if (session.getAttribute("usuario") == null) {
              response.sendRedirect("/login.jsp");
           } else {
        %>
        <!-- Barra de navegação -->
        <%@include file="/_navbar.jsp" %>

        <!-- Conteúdo -->
        <div class="container-fluid">
            <div class="container">
                <!-- Título e botão de listagem -->
                <div class="row">
                    <div class="span12">
                        <h1>Cadastrar Estabelecimento</h1>
                    </div>

                    <%
                       UsuarioBean usuarioSessao = (UsuarioBean) session.getAttribute("usuario");
                       if (usuarioSessao.isEhAdministrador()) {
                    %>

                    <div class="btn-group pull-right">
                        <a href="/pontosGastronomicos/listar.jsp" class="btn">
                            <i class="icon-list"></i>
                            Listar
                        </a>
                    </div>            

                    <%                  }
                    %>

                </div>
                <hr/>
                <!-- Entrada do endereço -->
                <div class="row-fluid">
                    <div class="span12">
                        <label>
                            <strong>Digite um endereço ou clique no mapa para definir a localização.</strong>
                        </label>
                        <input class="input-xxlarge" id="addressInput" name="addressInput" placeholder="Rua ou avenida, número, cidade, estado ou CEP"/>
                        <button id="markButton" class="btn btn-success">
                            <i class="icon-flag icon-white"></i>
                            Marcar ponto
                        </button>
                    </div>
                </div>
                <!-- Mapa -->
                <div class="row-fluid">
                    <div class="span10">
                        <div id="googleMap">
                        </div>
                    </div>
                </div>
                <hr/>
                <!-- Formulário -->
                <div class="row-fluid">
                    <h4>Preencha as demais informações sobre o estabelecimento.</h4>
                    <span class="help-block">* Campos obrigatórios</span>
                    <br/>
                    <div class="span12">
                        <form method="post" name="form" accept-charset="ISO-8859-1" class="form-horizontal">
                            <fieldset>
                                <input type="hidden" id="latitude" name="latitude"/>
                                <input type="hidden" id="longitude" name="longitude"/>
                                <!-- Campo nome -->
                                <div class="control-group">
                                    <label class="control-label">
                                        Nome *                              
                                    </label>
                                    <div class="controls">
                                        <input type="text" name="nome" required/>
                                    </div>
                                </div>
                                <!-- Campo tipo -->
                                <div class="control-group">
                                    <label class="control-label">
                                        Tipo *
                                    </label>
                                    <div class="controls">
                                        <select name="tipo" id="selectTipo">
                                            <option>Selecione...</option>
                                            <%
                                               List<TipoPontoGastronomicoBean> listaTipos = new TipoPontoGastronomicoController().recuperar();
                                               for (int i = 0; i < listaTipos.size(); i++) {
                                                  out.println("<option value='" + i + "'>" + listaTipos.get(i).getTipo() + "</option>");
                                               }
                                            %>
                                        </select>
                                    </div>
                                </div>
                                <!-- Campo estilos/especialidades -->
                                <div class="control-group">
                                    <label class="control-label">
                                        Estilos/especialidades *                               
                                    </label>
                                    <div class="controls">
                                        <select id="selectEstilo" name="estilos" size="10" multiple>
                                            <%
                                               List<EstiloPontoGastronomicoBean> listaEstilos = new EstiloPontoGastronomicoController().recuperar();
                                               for (int i = 0; i < listaEstilos.size(); i++) {
                                                  out.println("<option value='" + i + "'>" + listaEstilos.get(i).getEstilo() + "</option>");
                                               }
                                            %>
                                        </select>                                  
                                    </div>
                                </div>
                                <!-- Campo preço médio -->
                                <div class="control-group">
                                    <label class="control-label">
                                        Preço médio (R$) *                                        
                                    </label>
                                    <div class="controls">
                                        <input name="precoMedio" type="number" class="input-mini" min="0" required/>
                                        ,00
                                    </div>
                                </div>
                                <!-- Campo avaliação -->
                                <div class="control-group">
                                    <label class="control-label">
                                        Avaliação (0-10) *
                                    </label>
                                    <div class="controls">
                                        <input name="avaliacaoMedia" type="number" class="input-mini" min="0" max="10" required/>                                                          
                                    </div>
                                </div>
                                <!-- Campo horário de abertura -->
                                <div class="control-group">
                                    <label class="control-label">
                                        Horário de abertura
                                    </label>
                                    <div class="controls">
                                        <input id="horario1" type="text" name="horaAbre" class="input-mini" placeholder="hh:mm" pattern="([01]?[0-9]|2[0-3]):[0-5][0-9]"/>
                                    </div>
                                </div>
                                <!-- Campo horário de fechamento -->
                                <div class="control-group">
                                    <label class="control-label">
                                        Horário de fechamento
                                    </label>
                                    <div class="controls">
                                        <input id="horario2" type="text" name="horaFecha" class="input-mini" placeholder="hh:mm" pattern="([01]?[0-9]|2[0-3]):[0-5][0-9]"/>
                                    </div>
                                </div>
                                <!-- Campo telefone -->
                                <div class="control-group">
                                    <label class="control-label">
                                        Telefone
                                    </label>
                                    <div class="controls">
                                        <input id="telefone" type="text" name="telefone" placeholder="(XX) XXXX-XXXX"/>
                                    </div>
                                </div>
                                <!-- Campo e-mail -->
                                <div class="control-group">
                                    <label class="control-label">
                                        E-mail ou Site
                                    </label>
                                    <div class="controls">
                                        <input type="text" name="email">
                                    </div>
                                </div>
                                <!-- Campo descrição -->
                                <div class="control-group">
                                    <label class="control-label">
                                        Descrição ou detalhes de cardápio
                                    </label>
                                    <div class="controls">
                                        <textarea name="cardapio" cols="30" rows="10"></textarea>                                
                                    </div>
                                </div>
                            </fieldset>
                            <!-- Botões -->
                            <div class="form-actions">
                                <button type="reset" class="btn btn-danger">
                                    <i class="icon-remove icon-white"></i>
                                    Limpar
                                </button>
                                <button type="submit" class="btn btn-primary" id="cadastrarPontoGastronomico">
                                    <i class="icon-ok icon-white"></i>
                                    Cadastrar
                                </button>                        
                            </div>
                        </form>
                    </div>
                </div>
            </div>
            <!-- Rodapé -->
            <%@include file="/_footer.jsp" %>
        </div>

        <%
           Point ponto = null;
           Time horaAbre = null;
           Time horaFecha = null;
           TipoPontoGastronomicoBean tipo = null;
           Set<EstiloPontoGastronomicoBean> estilos = new HashSet<EstiloPontoGastronomicoBean>();
           UsuarioBean usuario = null;

           if (request.getParameter("nome") != null) {
              String latitudeString = request.getParameter("latitude");
              String longitudeString = request.getParameter("longitude");
              String horaAbreString = request.getParameter("horaAbre");
              String horaFechaString = request.getParameter("horaFecha");
              String tipoString = request.getParameter("tipo");
              String[] estilosString = request.getParameterValues("estilos");
              int userId = usuarioSessao.getId();

              ponto = PointFactory.create(Double.parseDouble(latitudeString), Double.parseDouble(longitudeString));

              if (!horaAbreString.isEmpty()) {
                 String[] horario = horaAbreString.split(":");
                 horaAbre = new Time(Integer.parseInt(horario[0]), Integer.parseInt(horario[1]), 0);
              }

              if (!horaFechaString.isEmpty()) {
                 String[] horario = horaFechaString.split(":");
                 horaFecha = new Time(Integer.parseInt(horario[0]), Integer.parseInt(horario[1]), 0);
              }

              if (tipoString != null) {
                 tipo = listaTipos.get(Integer.parseInt(tipoString));
              }

              if (estilosString != null) {
                 for (int i = 0; i < estilosString.length; i++) {
                    int index = Integer.parseInt(estilosString[i]);
                    estilos.add(listaEstilos.get(index));
                 }
              }

              usuario = new UsuarioController().recuperar(userId);
           }
        %>     

        <jsp:useBean id="pontoGastronomico" class="view.PontoGastronomicoBean">            
            <jsp:setProperty name="pontoGastronomico" property="nome"/>
            <jsp:setProperty name="pontoGastronomico" property="geolocalizacao" value="<%=ponto%>"/>
            <jsp:setProperty name="pontoGastronomico" property="telefone"/>
            <jsp:setProperty name="pontoGastronomico" property="email"/>
            <jsp:setProperty name="pontoGastronomico" property="horaAbre" value="<%=horaAbre%>"/>
            <jsp:setProperty name="pontoGastronomico" property="horaFecha" value="<%=horaFecha%>"/>
            <jsp:setProperty name="pontoGastronomico" property="quantidadeAvaliacoes" value="1"/>
            <jsp:setProperty name="pontoGastronomico" property="avaliacaoMedia"/>
            <jsp:setProperty name="pontoGastronomico" property="quantidadePrecos" value="1"/>
            <jsp:setProperty name="pontoGastronomico" property="precoMedio"/>
            <jsp:setProperty name="pontoGastronomico" property="cardapio"/>
            <jsp:setProperty name="pontoGastronomico" property="tipo" value="<%=tipo%>"/>
            <jsp:setProperty name="pontoGastronomico" property="estilos" value="<%=estilos%>"/>
            <jsp:setProperty name="pontoGastronomico" property="cadastradoPor" value="<%=usuario%>"/>            
        </jsp:useBean>   

        <%
              if (pontoGastronomico.getNome() != null) {
                 if (new PontoGastronomicoController().salvar(pontoGastronomico)) {
                    out.println("<script>alert('Cadastro realizado com sucesso!');</script>");
                    out.println("<script>location.href = '/pontosGastronomicos/listar.jsp';</script>");
                 } else {
                    out.println("<script>alert('Ocorreu um erro e o cadastro falhou!');</script>");
                 }
              }
           }
        %>
    </body>
</html>
